#include "common.cpp"
#include <iostream>

using namespace std;

/*
	per simone:
	- manca un metodo per eliminare un AS dalla simulazione.


	-dovresti risolvere questo bug:
aggiungendo un AS, il simulatore crasha.
bugAddAs serve ad evidenziare il problema


Simulator simulatore(8);
	
//bool Simulator::addAS(int number, string name, string owner, bool state);
simulatore.addAS(10, string("pippo"), string("pluto"),true);
	
questo fa crashare, perche la rete sembra non gestire autonomamente l'espansione della
rete.


non essendoci un modo per espandere esplicitamente la rete, 
pensavo che lo facesse autonomamente; dovresti scegliere una di queste due strategie
altrimenti si rimane vincolati alla grandezza della simulazione iniziale...
	
Il parametro name mi sembra ridondante: 
nel tuo esempio name e' banalmente AS concatenato all'id!
		
printASs() stampa:	
list of all the Autonomous Systems: 
1 - AS1 (Vodafone)
2 - AS2 (Tele Tu)
3 - AS3 (Tiscali)
4 - AS4 (Infostrada)
5 - AS5 (Fastweb)
6 - AS6 (Aruba)
7 - AS7 (NGI)
8 - AS8 (Telecom Italia)


a state potresti assegnargli per default attivo, in modo da evitare complicazioni
del codice (vale la pena di aggungere un as disattivo?)
	

Simone a che punto sei con il bug relativo a deleteTraffic ?
*/


int main()
{
	int n = 8;  // n sono il numero degli AS
	n++;        // incremento n di uno per non usare l'indice zero di vettori e matrici
	
	Simulator simulatore(n);

	simulatore.physicalConfig(); // Istanzio la rete fisica inserita nel file di configurazione           
	simulatore.calculateLogicalNet();
	simulatore.trafficConfig(); // Istanzio il traffico inserito nel file di configurazione

	simulatore.printASs();
	
	simulatore.addAS(5, string("pippo"), string("pluto"),true);   
	simulatore.update();
	simulatore.printASs();


	simulatore.addAS(10, string("pippo"), string("pluto"),true);
	simulatore.update();
	simulatore.printASs();

return 0;
}
